#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Gitee仓库批量管理工具

这是一个用于批量创建、初始化gitee仓库并上传项目的工具。
提供了友好的图形用户界面，支持批量操作多个项目。

作者: caixunkun666
版本: 1.0.0
创建日期: 2025-01-01
"""

import sys
import os
import traceback
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

try:
    # 导入必要的模块
    from core.config import ConfigManager
    from gui.main_window import MainWindow
    from utils.logger import get_logger
    
    # 检查Python版本
    if sys.version_info < (3, 7):
        print("错误: 此程序需要Python 3.7或更高版本")
        sys.exit(1)
    
    def check_dependencies():
        """检查依赖包是否已安装"""
        required_packages = {
            'requests': 'requests',
            'GitPython': 'git',
            'pillow': 'PIL',
            'ttkbootstrap': 'ttkbootstrap'
        }
        
        missing_packages = []
        for package_name, import_name in required_packages.items():
            try:
                __import__(import_name)
            except ImportError:
                missing_packages.append(package_name)
        
        if missing_packages:
            print("错误: 缺少以下依赖包:")
            for package in missing_packages:
                print(f"  - {package}")
            print("\n请运行以下命令安装依赖:")
            print("pip install -r requirements.txt")
            return False
        
        return True
    
    def setup_directories():
        """设置必要的目录"""
        directories = ['logs', 'temp']
        for directory in directories:
            dir_path = project_root / directory
            dir_path.mkdir(exist_ok=True)
    
    def main():
        """主函数"""
        try:
            # 设置工作目录
            os.chdir(project_root)
            
            # 检查依赖
            if not check_dependencies():
                input("按Enter键退出...")
                return
            
            # 设置目录
            setup_directories()
            
            # 初始化日志
            logger = get_logger("Main")
            logger.info("=" * 50)
            logger.info("Gitee仓库批量管理工具启动")
            logger.info(f"工作目录: {project_root}")
            logger.info(f"Python版本: {sys.version}")
            logger.info("=" * 50)
            
            # 加载配置
            config_manager = ConfigManager("config.json")
            logger.info("配置管理器初始化完成")
            
            # 创建并运行主窗口
            app = MainWindow(config_manager)
            logger.info("主窗口创建完成，开始运行")
            
            # 显示启动信息
            print("Gitee仓库批量管理工具")
            print("版本: 1.0.0")
            print("正在启动图形界面...")
            
            # 运行应用
            app.run()
            
            logger.info("应用程序正常退出")
            
        except KeyboardInterrupt:
            print("\n用户中断程序运行")
            logger.info("用户中断程序运行")
        except Exception as e:
            error_msg = f"程序运行出现异常: {str(e)}"
            print(f"错误: {error_msg}")
            
            # 记录详细错误信息
            if 'logger' in locals():
                logger.error(error_msg)
                logger.error(f"异常详情:\n{traceback.format_exc()}")
            
            # 显示错误对话框
            try:
                import tkinter as tk
                from tkinter import messagebox
                root = tk.Tk()
                root.withdraw()  # 隐藏主窗口
                messagebox.showerror("程序错误", f"程序运行时发生错误:\n{error_msg}\n\n详细信息请查看日志文件。")
                root.destroy()
            except:
                pass
            
            input("按Enter键退出...")
    
    def show_help():
        """显示帮助信息"""
        help_text = """
Gitee仓库批量管理工具 v1.0.0

这是一个用于批量创建、初始化gitee仓库并上传项目的工具。

使用方法:
    python main.py          # 启动图形界面
    python main.py --help   # 显示此帮助信息

功能特点:
- 批量创建gitee仓库
- 自动初始化Git仓库
- 批量上传项目文件
- 友好的图形用户界面
- 详细的操作日志
- 配置管理

配置要求:
1. 需要gitee的Access Token
2. Python 3.7+
3. 安装requirements.txt中的依赖包

获取Access Token:
1. 登录gitee.com
2. 进入"设置" -> "私人令牌"
3. 点击"生成新令牌"
4. 选择相应的权限(至少需要repo权限)
5. 复制生成的token到本工具的配置中

项目结构:
├── main.py              # 主程序入口
├── config.json          # 配置文件
├── requirements.txt     # 依赖文件
├── core/                # 核心功能模块
├── gui/                 # 图形界面模块
├── utils/               # 工具模块
└── logs/                # 日志目录

更多信息请参考README.md文件。
        """
        print(help_text)
    
    if __name__ == "__main__":
        # 检查命令行参数
        if len(sys.argv) > 1:
            if sys.argv[1] in ['--help', '-h', 'help']:
                show_help()
                sys.exit(0)
            elif sys.argv[1] in ['--version', '-v']:
                print("Gitee仓库批量管理工具 v1.0.0")
                sys.exit(0)
        
        # 运行主程序
        main()

except ImportError as e:
    print(f"导入模块失败: {e}")
    print("\n请确保已安装所有依赖包:")
    print("pip install -r requirements.txt")
    input("按Enter键退出...")
except Exception as e:
    print(f"程序启动失败: {e}")
    print(f"\n详细错误信息:\n{traceback.format_exc()}")
    input("按Enter键退出...")
